#pragma once
#include <string>
#include <vector>

enum class Attribute_Type {
    INT,
    CHAR
};

enum class Sql_Command_Type {
    CREATE_TABLE
};

struct Attribute_Info {
    std::string attr_name;
    Attribute_Type attr_type;
    int length;
};

struct Sql_Node {
    Sql_Command_Type command_type;

    Sql_Node(Sql_Command_Type type) : command_type(type) {}
    virtual ~Sql_Node() = default;
};

struct Create_Table_Sql_Node : Sql_Node {
    std::string relation_name;
    std::vector<Attribute_Info> attr_infos;
    std::vector<std::string> primary_keys;

    Create_Table_Sql_Node(Sql_Command_Type type) : Sql_Node(type) {}
};